#include "color.h"

static unsigned int *lcd_p;	//映射内存的返回的指针
static int lcd_fd;			//显示屏的文件描述符

//1、打开显示屏(color)
int open_lcd_color(void)
{
	//1、打开显示屏
	lcd_fd=open("/dev/fb0", O_RDWR);
	if (-1 == lcd_fd)
	{
		perror("open lcd error!");
		return -1;
	}
	//2、写入颜色数据到显示屏上
	lcd_p=mmap(	NULL, 					//填写NULL，内核自动分配映射的内存地址
				800*480*4,				//显示屏的显存
				PROT_READ|PROT_WRITE, 	//这块映射的内存可读可写
				MAP_SHARED,				//共享这块内存
				lcd_fd,					//显示屏的文件描述符
				0);						//指向这块映射内存的指针偏移量

	if (lcd_p == (void *) -1)
	{
		printf("mmap area error!\n");
		return -2;
	}
	return 0;
}


//2、显示颜色(指定显示颜色)
int show_color(int color)
{
	int i;
	for(i=0; i<800*480; i++)
	{
		*(lcd_p+i) = color;	//颜色
	}
	return 0;
}


//3、关闭显示屏(color)
int close_lcd_color(void)
{
	munmap(lcd_p, 800*480*4);
	close(lcd_fd);
	return 0;
}